<!DOCTYPE html>
<html>

	<head>
		<meta charset="UTF-8">
		<title>string问题</title>
	</head>

	<body>
		<p>1.看下面的代码，输出什么，foo的值为什么？
	<pre>
	var foo = "11"+2-"1";
	console.log(foo);
	console.log(typeof foo);
	</pre>
		</p>
		<h4>返回的值是111 number <br />
		因为只有双引号引起来的才算是值，而typeof 返回值是数据类型</h4>
		<p>
			2.string.charAt() 查找ABCDEFGHIJKLM在第8位的字符
		</p>
		<h4>
			说明：string.charAt() 字符串中的字符从左向右索引，第一个字符的索引值为 0，最后一个字符（假设该字符位于字符串 stringName 中）的索引值为 stringName.length - 1。 如果指定的 index 值超出了该范围，则返回一个空字符串。<br />
			语法：<br /> var str ="ABCDEFGHIJKLM";<br />
				console.log("第8个字符是'"+str.charAt(8)+"'") <br />
			答：第8个字符是'I'
			
		</h4>
		<h3>补充：查找特定位置上的字符，返回特定位置的字符，返回值的数值类型为字符串(用typeof查找)string</h3>
		
		<p>
			3.string.charCodeAt() 查找ABCDEFGHIJKLM在第10位字符的字符码位
		</p>
		<h4>
			说明：从0开始的字符码位是65，依次加1计算过去 ，大写是65 <br />   注意：区分大小心<br />
			语法：<br /> 
			 var str ="ABCDEFGHIJKLM"; <br />
			 console.log("第10个字符码位是'"+str.charCodeAt(10)+"'") <br />
			答：第10个字符码位是'75' <br />
			
			<span style="color: red;">大写字母在前，小写字母在后(数字大小) </span><br />
			<span style="color: red;">中文的比较会转化成Unicode值，再进行比较</span>
			
		</h4>
		<p>
			4.string.concat() 将字符串Blue与字符J合并起来，形成新字符串BlueJ
		</p>
		<h4>
			说明：将一个或多个字符串与原字符串连接合并，形成一个新的字符串并返回 <br />
			语法: <br />
			var bule = "Bule"; <br />
				console.log(bule.concat("J")) <br />
			答：BuleJ
		</h4>
		<p>
			5.string.indexOf() 在字符串Mississippi里查找字符串ip首次出现的位置
		</p>
		<h4>
			说明：string.indexOf() 表示被查找的值 <br />
			从左往右依次找想要找的值,如果有,则返回该值首次出现的索引(位置),如果找不到,则返回(-1)值;<br />
			语法：<br />
			var str = "Mississippi"<br />
				console.log("ip首次出现的位置： " + str.indexOf("ip"));<br />
				答：ip首次出现的位置： 7
		</h4>
		<p>
			6.string.lastIndexOf() 在字符串Mississippi里从尾部开始查找，is首次出现的位置
		</p>
		<h4>
			string.lastIndexOf()与string.indexOf()的区别：<br />
			注意I与i大小写区分;lastIndexOf()是重复出现的相同字符当成不同的计算 <br />
			语法：<br />
			var str = "Mississippi"; <br />
				console.log("is首次出现的位置： " + str.lastIndexOf("is"));<br />
			答：is首次出现的位置： 4
		</h4>
		<p>
			7.string.match() 一串属于我们的密码"n&i$$zh#en*b@a$()*ng(2!###&33", 找出所有英文和数字
			<h4>
				<span style="color: red;">不大懂，但是可以输出来</span> <br />
				语法：<br />
				var str = 'n&i$$zh#en*b@a$()*ng(2!###&33'; <br />
				var str1 = /[a-z,0-9]/gi;<br />
				var str11 = str.match(str1);<br />
				console.log(str11);<br />
				console.log(str.match(/[a-z,0-9]/gi));  <span style="color: red;">简洁的方法</span><br />
				答：n,i,z,h,e,n,b,a,n,g2,3,3
			</h4>
		</p>
		<p>
			8.string.replace() 字符串It's time to Sleep,将"Sleep"，替换成其他字符串
		</p>
		<h4>
			语法：<br />
			var str = "It's time to Sleep"; <br />
			var newstr = str.replace(/Sleep/i, 'Christmas'); <br />
			console.log(newstr);  <br />
			答：It's time to Christmas
			<p style="color: red;">也可以传一个正则进去</p>
		</h4>
		<p>
			9.string.slice() 有段文字text='and in it he says "Any damn fool could' 不改变原text的前提下，提取第一段话a="Any damn fool could', 第二段话b = "and",第三段话c="could"、 注意，slice()可以接受负数
		</p>
		<h4>
			说明： 从一个字符串中提取字符串并返回新字符串。在一个字符串中的改变不会影响另一个字符串。也就是说，slice 不修改原字符串，只会返回一个包含了原字符串中部分字符的新字符串。<br />
		<span style="color: red;">注意数值</span> <br />
			语法：<br />
			var text1 = 'and in it he says "Any damn fool could' <br />
			console.log("a="+text1.slice(17)) <br />
			console.log("<br/>") <br />
			console.log("b="+text1.slice(0,3)) <br />
			console.log("b="+text1.slice(-5)) <br />
		</h4>
		<p>
			10.string.split() 字符串digite="0123456789",把前5个字符分割出来，返回个单字符的数组 注意，返回数组里面的数字是字符串类型
		</p>
		<h4>
			说明：方法使用指定的分隔符字符串将一个String对象分割成字符串数组，以将字符串分隔为子字符串，以确定每个拆分的位置。<br />
			方法: <br />
			var digite="0123456789"; <br />
			var splits = digite.split("",5);<br />

			console.log(splits);<br />
			答：["0", "1", "2", "3", "4"]
			<span style="color: red;"> 不知道是否是这样</span>
		</h4>
		<p>
			11.string.toLowerCase() 将字符串"TextAligin"，的英文字母全部转换为小写格式
		</p>
		<h4>
			代码：var chang ="TextAligin";<br />
			console.log(chang.toLowerCase()) <br />
			答：textaligin
		</h4>
		<p>
			12.string.toUpperCase() 将字符串"TextAligin"，的英文字母全部转换为大写格式
		</p>
		<h4>
			代码：var chang ="TextAligin";<br />
			console.log(chang.toUpperCase()) <br />
			答：TEXTALIGIN		
		</h4>
		<p>
			13.已知有字符串foo=”get-element-by-id”,写一个function将其转化成驼峰表示法”getElementById”。
			
		</p>
		
		<h4>
			<!--str.toLocaleUpperCase()语法 <br />-->
			<!--说明：一个新的字符串，即根据本地化的大小写映射规则将输入的字符串转化成大写形式的结果。<br />-->
			var a = 'get-element-by-id'; <br />
			console.log(a.replace(/-[a-z]/g,function(aa){ <br />
				return aa.toUpperCase().slice(1)  <br />
			}))
		
		</h4>
		<script type="text/javascript">
			var foo = "11"+2-"1";
				console.log(foo);
				console.log(typeof foo);
			var str ="ABCDEFGHIJKLM";
				console.log("第8个字符集是'"+str.charAt(8)+"'")
				console.log("第10个字符码位是'"+str.charCodeAt(10)+"'")
			
			var bule = "Bule";
				console.log(bule.concat("J"))
				
			var str = "Mississippi"
				console.log("ip首次出现的位置： " + str.indexOf("ip"));
				console.log("is首次出现的位置： " + str.lastIndexOf("is"));
//			
			
			
			var str = 'n&i$$zh#en*b@a$()*ng(2!###&33';
			var str1 = /[a-z，0-9]/gi; //gi表示全部(g)忽略大小写(i)			
			var str11 = str.match(str1);
			console.log(str.match(/[a-z，0-9]/gi));
			console.log(str11);
//			另一个写法：console.log(str1.match(str1));
//			注意:数值不能直接匹配,要转换加toString
			
			var str = "It's time to Sleep";
			var newstr = str.replace(/Sleep/i, 'Christmas');
			console.log(newstr);  
			
//			排序数字的排序
 			var arr = [23,12,1,34,116,8,18,37,56,50];
 			function sequence(a,b){
 				 return a - b;
 				}
 			console.log(arr.sort(sequence));
 			
 			//字母的排序
 			var arr = ['fanda','banner','find','zoom','index','width','javascript'];
 			console.log(arr.sort());
 			//字符串的切割
// 			splits():以什么"标志"作为切割的依据
 			var digite="0123456789";
			var splits = digite.split("",5);
			console.log(splits);
//			另一个切割方法substr()
//			0：第一次参数，开始切割的位置
//			5:第二个参数,切割的长度
//			从3个开始切5个字符出来
			var str= "12234567899"
			console.log(str.substr(3,5));
//			第三个切割方法substring()
//			从第四个位置开始到第7个位置结束
			console.log(str.substring(4,7));
			//
//			转换为小写的字母
			var chang ="TextAligin";
			console.log(chang.toUpperCase())
			
			
			var a = 'get-element-by-id'; 
			console.log(a.replace(/-[a-z]/g,function(aa){
				return aa.toUpperCase().slice(1)
			}))
//			function titleCase1(str) {  
    //将字符串分解为数组并将其小写化  
//  var convertToArray = str.toLowerCase().split("-");   	
//  for (var i = 1; i < convertToArray.length; i++) {  
//      var char = convertToArray[i].charAt(0);  
//      //使用 replace()方法将数组中的每个首字母大写化  
//      convertToArray[i] = convertToArray[i].replace(char, function replace(char) {  
//          return char.toUpperCase();  
//      });  
//  }  
//  return convertToArray.join("");  //" " 这里是把单词分开
//}  			
//console.log(titleCase1(a));  
//			第二个方法
			function titleCase2(b){
				 return b.toLowerCase().replace(/-[a-z]/g, function(c){
				 	console.log(c)
				 	return c.toUpperCase().substring(1)
				 	
				 });
			}						
			console.log(titleCase2(a));
			
//			第九题string.slice() 
			var text1 = 'and in it he says "Any damn fool could'
			console.log("a="+text1.slice(17))
			console.log("<br/>")
			console.log("b="+text1.slice(0,3))
			console.log("b="+text1.slice(-5))
			</script>
	</body>

</html>